package com.ruoyi.project.pro.style.service.impl;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.exception.cms.CmsNotDeleteException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.project.pro.manager.mapper.ProManagerMapper;
import com.ruoyi.project.pro.style.domain.ProStyle;
import com.ruoyi.project.pro.style.mapper.StyleMapper;
import com.ruoyi.project.pro.style.service.IStyleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @program: zhizun
 * @author: Mrs.ye
 * @create: 2020-09-17 14:21
 * @description:
 **/
@Service
public class StyleServiceImpl implements IStyleService {

    @Autowired
    private StyleMapper styleMapper;
    @Autowired
    private ProManagerMapper proManagerMapper;
    /**
     * 分页查询产品风格
     * @return
     */
    @Override
    public List<ProStyle> selectStyle(ProStyle proStyle) {
        return styleMapper.selectStyleList(proStyle);
    }


    /**
     * 校验岗位名称是否唯一
     *
     * @param proStyle 产品风格信息
     * @return 结果
     * 根据公告的名字到数据库中查询公告
     * 将数据库中公告的id传进来的公告id进行对比
     */
    @Override
    public String checkStyleNameUnique(ProStyle proStyle) {
        Long styleId = StringUtils.isNull(proStyle.getStyleId()) ? -1L : proStyle.getStyleId();
        ProStyle info = styleMapper.checkStyleNameUnique(proStyle.getStyleName());
        //如果根据公告名称查询出来了公告,并且查询出来的公告id和原本的id不同,表示同一个公告名称有不同的id,
        //反过来就是说不同的id相同的公告名称,这样公告名称就不唯一了
        if (StringUtils.isNotNull(info) && info.getStyleId().longValue() != styleId.longValue())
        {
            return UserConstants.TYPE_CODE_NOT_UNIQUE;
        }
        return UserConstants.TYPE_CODE_UNIQUE;
    }

    /**
     * 新增产品风格
     * @param proStyle
     * @return
     */
    @Override
    public int insertProStyle(ProStyle proStyle) {
        proStyle.setCreateBy(ShiroUtils.getLoginName());
        return styleMapper.insertProStyle(proStyle);
    }

    /**
     * 通过id查询产品风格
     * @param styleId
     * @return
     */
    @Override
    public ProStyle selectStyleById(Long styleId) {
        ProStyle proStyle = styleMapper.selectStyleById(styleId);
        System.out.println(proStyle);

        return proStyle;
    }

    /**
     * 修改产品风格
     * @param proStyle
     * @return
     */

    @Override
    public int updateStyle(ProStyle proStyle) {
        proStyle.setUpdateBy(ShiroUtils.getLoginName());
        return styleMapper.updateStyle(proStyle);
    }

    @Override
    public int removeProStyleById(Long[] ids) {
        boolean flag=true;

        for (Long id : ids) {
            Integer proStyles=  proManagerMapper.selectProManagerByStyleId(id);
            if(proStyles>0){
                flag=false;
                break;
            }
        }
        if(!flag){
            throw new CmsNotDeleteException("风格还有风格内容,不能删除");
        }
        return styleMapper.removeProStyleById(ids);
    }
}
